package pms.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

import pms.dao.AbteilungDao;
import pms.dao.MitarbeiterDao;

/**
 * <p>
 * Ein Controller, mit dem man einen Mitarbeiter auswaehlen 
 * und in die gewuenschte Abteilung zuordnen kann
 * </p>
 * <p>
 * ModelAndView Infos
 * <p>
 * <ul>
 * <li>title: Ueberschrift dieser View</li>
 * <li>message: Hinweise fuer den Benutzer</li>
 * <li>abteilungsname: hier wird die Abteilung ausgegeben</li>
 * <li>allemitarbeiterinabteilung: alle Mitarbeiter, die schon zugeordnet sind</li>
 * <li>allemitarbeiterdienichtinderabteilung: alle Mitarbeiter, die noch nicht zugeordnet sind</li>
 * </ul>
 * Der Name der ausgebenden View ist: 'waehlemitarbeiterzuabteilung'
 * </p>
 * @see MitarbeiterDao
 * @see AbteilungDao
 */ 

public class WaehleMitarbeiterderAbteilung extends AbstractController 
{
	private AbteilungDao abteilungDao;
	private MitarbeiterDao mitarbeiterDao;
	
	public void setAbteilungDao(AbteilungDao abteilungDao) 
	{this.abteilungDao = abteilungDao;}

	public AbteilungDao getAbteilungDao() 
	{return abteilungDao;}
	
	public MitarbeiterDao getMitarbeiterDao() 
	{return mitarbeiterDao;}

	public void setMitarbeiterDao(MitarbeiterDao mitarbeiterDao) 
	{this.mitarbeiterDao = mitarbeiterDao;}
	
	protected ModelAndView handleRequestInternal(
			HttpServletRequest httpServletRequest,
			HttpServletResponse httpServletResponse) throws Exception 
			{
			ModelAndView mv = new ModelAndView();
			// Welche Abteilung wurde gewählt
			int ida = Integer.parseInt(httpServletRequest.getParameter("ida"));
			if (mitarbeiterDao.findAll().isEmpty() || abteilungDao.findAll().isEmpty()) {
				mv.addObject("title", "Waehle Mitarbeiter Abteilung zuordnen");
				mv.setViewName("Fehler");
				if (abteilungDao.findAll().isEmpty()) {
					mv.addObject("message", "Es müssen zuerst Abteilungen definiert werden!" +
							" Bitte Eingaben über Admin...");
				} else {
					mv.addObject("message", "Es müssen zuerst Mitarbeiter definiert werden!" +
							" Bitte Eingaben über Admin...");
				} 
			} else {
			mv.addObject("title", "Zuordnen von Mitarbeiter(n) zu Abteilung(en)");
			mv.addObject("message", "Ordne Mitarbeiter zu:");
			// Alle Mitarbeiter der gewählten Abteilung:
			mv.addObject("abteilungsname", abteilungDao.findById(ida).getAbteilungsname());
			mv.addObject("abteilungsid", abteilungDao.findById(ida).getId());
		    mv.addObject("allemitarbeiterinabteilung", abteilungDao.findeallemitarbeitereinerabteilung(ida));
		    mv.addObject("allemitarbeiterdienichtinderabteilung", mitarbeiterDao.findeallemitarbeiterdienichtimSet(abteilungDao.findeallemitarbeitereinerabteilung(ida)));
		    mv.setViewName("waehlemitarbeiterzuabteilung");
			}
		return mv;
	}

}